package com.exam.system.controller;

import com.exam.system.entity.ExamInfo;
import com.exam.system.entity.ExamUser;
import com.exam.system.entity.ResponseEntity;
import com.exam.system.redis.RedisUtils;
import com.exam.system.service.ExamUserService;
import com.exam.system.utils.JwtUtils;
import org.apache.shiro.crypto.hash.SimpleHash;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.support.JstlUtils;

import java.util.List;
import java.util.concurrent.TimeUnit;

/**
 * @ClassName ExamUserController
 * @Description 用户controller层
 * @Author ckl
 * @DATE 2021/5/30 17:58
 * @versions 1.0
 */
@RestController
@CrossOrigin
public class ExamUserController {
    @Autowired
    private ExamUserService examUserService;
    @Autowired
    private RedisUtils redisUtils;

    /**
     * 登陆方法
     * @param account 用户输入的账号
     * @param userPassword 用户输入的密码
     * @return 返回用户
     */
    @RequestMapping("login")
    public ResponseEntity<ExamUser> login(String account,String userPassword){
        // 将用户输入的密码加密
        SimpleHash md5 = new SimpleHash("Md5", userPassword, JwtUtils.SECRET);
        // 和数据库中的密码对比
        // 获取加密的密码
        String newPassword = md5.toHex();
        // 登陆
        ExamUser examUser = examUserService.login(account);
        if (examUser != null && examUser.getUserPassword().equals(userPassword)){
            // 在redis中存入一份token的信息
            String newToken = JwtUtils.sign(account);
            redisUtils.set("token"+account, newToken);
            // 设置过期时间 6000小时
            redisUtils.expire("token", 6000, TimeUnit.SECONDS);
            return new ResponseEntity<>(200,newToken,examUser);
        }else {
            //登录失败
            return new ResponseEntity<>(430, "密码错误", null);
        }
    }


}
